#include <iostream>
#include <cstdio>
#include <memory>
#include <stdexcept>
#include <string>
#include <array>

std::string execPython(const std::string& cmd) {
    std::array<char, 256> buffer{};
    std::string result;

    // 打开管道，执行命令
    std::unique_ptr<FILE, decltype(&pclose)> pipe(popen(cmd.c_str(), "r"), pclose);
    if (!pipe) {
        throw std::runtime_error("popen() failed!");
    }

    // 读取输出
    while (fgets(buffer.data(), buffer.size(), pipe.get()) != nullptr) {
        result += buffer.data();
    }

    return result;
}

int main() {
    // 注意替换成你Python脚本的实际路径，确保Python环境可用
    std::string pythonCmd = "python3 ./pythoncodes/pcmtotext.py"; //注意路径，这个路径得和py脚本里面的pcm文件的路径一致

    try {
        std::string output = execPython(pythonCmd);

        // 因为你的脚本最后 print 了一行，所以输出就是你想要的字符串
        std::cout << "Python脚本输出内容:\n" << output << std::endl;
    } catch (const std::exception& ex) {
        std::cerr << "执行Python脚本失败: " << ex.what() << std::endl;
    }
    return 0;
}
